package com.zmn.oms.persistence.interfaces.ins;

import com.zmn.oms.model.entity.ins.InsOrderMasterCpic;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 类描述：保险单
 *
 * @author lhl
 * @date 2021/03/26 10:12
 */
public interface InsOrderMasterCpicDao {

    /**
     * 通过主键查询
     * @return
     */
    List<InsOrderMasterCpic> listByKeys(@Param("keys") List<Long> insMasterIds);

    /**
     * 通过订单号查询
     * @return
     */
    List<InsOrderMasterCpic> listByOrderIds(@Param("orderIds") List<Long> orderIds);

    /**
     * 查询未同步的数据
     * @return
     */
    List<InsOrderMasterCpic> listNoSynced(Integer rows);

    /**
     * 查询未同步的数据
     * @return
     */
    List<InsOrderMasterCpic> listErpNoSynced(Integer rows);

    /**
     * 查询出单状态未完成的（已投保，但未拿到保单号）
     * @return
     */
    List<InsOrderMasterCpic> listFormStatusPending(Integer rows);

    /**
     * 查询出单状态失败的
     * @return
     */
    List<InsOrderMasterCpic> listFormStatusFail(Integer rows);

    /**
     * 修改同步状态
     * @param model
     */
    void updateByKey(InsOrderMasterCpic model);

    /**
     * 修改出单状态为：未知（查询无结果）
     * @param insMasterIds
     */
    void updateFormStatus2UnknowByKeys(@Param("keys") List<Long> insMasterIds);

    /**
     * 修改同步状态
     * @param list
     */
    void updateRequestIdByKeys(@Param("insOrderMasterCpicList") List<InsOrderMasterCpic> list,
                               @Param("requestId") String requestId,
                               @Param("insStartDate") String insStartDate,
                               @Param("insEndDate") String insEndDate);

    /**
     * 标记erp同步成功数据
     * @param insMasterIds
     */
    void updateErpSyncSuccessByKeys(@Param("keys") List<Long> insMasterIds);

    /**
     * 标记erp同步失败数据
     * @param insMasterIds
     */
    void updateErpSyncFailByKeys(@Param("keys") List<Long> insMasterIds);

    /**
     * 批量添加
     * @param model
     * @return
     */
    int insert(InsOrderMasterCpic model);
}